package com.bitoon.basketdudes.web;

import com.bitoon.basketdudes.web.jpa.*;
 
import com.opensymphony.xwork2.*;
import java.util.*;
import javax.persistence.*;
import org.apache.log4j.Logger;

public class LoginUsuarioLogin extends BaseAction {

    private String usuario;
    private String tcontrasenya;
    private Logger log = Logger.getLogger(LoginUsuarioLogin.class);

    //private String urlRedirect = "";

    public LoginUsuarioLogin() {
    }

    public String getUrl() {
        String retorno = "/";

        if (log.isDebugEnabled()) {
            log.debug(">>> llamando a getURL de Login");
        }

        try {
            //Map<String,Object> session = ActionContext.getContext().getSession();
            //retorno = (String)session.get("paginaRetornoAnt"); // 13.10.2011
            retorno = (String)session.get("paginaRetorno");
        } catch (Exception e) {

        }

        return retorno;
    }


    public String execute() {

        Map<String,Object> session = ActionContext.getContext().getSession();
        int idUsuario = -1;
        EntityManager em = null;

        if ( (usuario != null) && (tcontrasenya != null) ) {

            try {
                em = emfBasket.createEntityManager(); // checked

                Query q = em.createNamedQuery("UsuarioLogin.findByNickPassword");
                q.setParameter("nick", usuario);
                q.setParameter("password", tcontrasenya);

                if (log.isDebugEnabled()) {
                    log.debug("usuario: " + usuario + ", contrasenya: " + tcontrasenya);
                }

                UsuarioLogin u = (UsuarioLogin)q.getSingleResult();

                if (u != null) { // El usuario es válido
                    idUsuario = u.getId();
                } else {
                    idUsuario = 0;
                }

                if (idUsuario > 0) { // existe el usuario
                    // Poner logado en la sesión
                    if (log.isDebugEnabled()) {
                        log.debug("el usuarioLogin es: " + u);
                    }
                    session.put("bd_userId", Integer.toString(idUsuario));
                    session.put("bd_userLogado", u);
                } else {
                    if (log.isDebugEnabled()) {
                        log.debug("no existe el usuario!");
                    }
                }

            } catch (Exception e) {
                log.error("[execute]: " + e);
                idUsuario = -2;
            } finally {
                try { em.close(); } catch (Exception e) { }
            }

        }

        return REDIRECT;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getTcontrasenya() {
        return tcontrasenya;
    }

    public void setTcontrasenya(String contrasenya) {
        this.tcontrasenya = contrasenya;
    }

    /*
    public String getPaginaRetorno() {
        return paginaRetorno;
    }

    public void setPaginaRetorno(String paginaRetorno) {
        this.paginaRetorno = paginaRetorno;
    }
     *
     */

}
